Implement a local registry type
This flavor of registry is intended to behave very similarly to the standard
remote registry, except everything is contained locally on the filesystem
instead. There are a few components to this new flavor of registry:
1. The registry itself is rooted at a particular directory, owning all structure
beneath it.
2. There is an `index` folder with the same structure as the crates.io index
describing the local registry (e.g. contents, versions, checksums, etc).
3. Inside the root will also be a list of `.crate` files which correspond to
those described in the index. All crates must be of the form
`name-version.crate` and be the same `.crate` files from crates.io itself.
This support can currently be used via the previous implementation of source
overrides with the new type:
```toml
[source.crates-io]
replace-with = 'my-awesome-registry'
[source.my-awesome-registry]
local-registry = 'path/to/registry'
```
I will soon follow up with a tool which can be used to manage these local
registries externally.